package domain

import (
	"context"
)

type RootRepo interface {
	// Create 创建系统超管账号
	Create(ctx context.Context, root *Root) (int64, error)

	// Get 通过 ID 获取系统超管账号
	Get(ctx context.Context, id int64) (*Root, error)
	// GetByName 通过账号名获取系统超管账号
	GetByName(ctx context.Context, name string) (*Root, error)
	// GetByPhone  通过手机号获取系统超管账号
	GetByPhone(ctx context.Context, phone, countryCode int64) (*Root, error)
	// GetAll  获取所有系统超管账号
	GetAll(ctx context.Context) ([]*Root, error)

	// GetDetails  通过 ID 获取系统超管账号详情
	GetDetails(ctx context.Context, id int64) (*Root, error)
	// GetDetailsByName  通过账号名获取系统超管账号详情
	GetDetailsByName(ctx context.Context, name string) (*Root, error)
	// GetDetailsAll  获取所有系统超管账号详情
	GetDetailsAll(ctx context.Context) ([]*Root, error)

	// Update 修改系统超管账号基础信息
	Update(ctx context.Context, root *Root) error
	// UpdateLastLogin 修改系统超管账号最后登录时间
	UpdateLastLogin(ctx context.Context, id int64) error
	// UpdateLevel 修改系统超管账号管理级别
	UpdateLevel(ctx context.Context, id int64, level int32) error
	// UpdatePassword 修改系统超管账号密码
	UpdatePassword(ctx context.Context, id int64, oldPassword, newPassword string) error
	// UpdateIDCard 修改系统超管账号身份证号
	UpdateIDCard(ctx context.Context, id int64, idCard string) error

	// Enable 启用系统超管账号
	Enable(ctx context.Context, id int64, status string) error
	// Disable 禁用系统超管账号
	Disable(ctx context.Context, id int64, status string) error

	// Delete 删除系统超管账号
	Delete(ctx context.Context, id int64) error
}

type RootCache interface {
	MakeTokenCache(ctx context.Context, token string, id int64) error

	GetTokenCache(ctx context.Context, id int64) (string, error)

	DeleteTokenCache(ctx context.Context, id int64) error
}
